¿Hubo o No Hubo Mejora Ambiental?

El Cambio de Régimen

Un Enfoque Estocástico Basado en Análisis de Series Temporales

Author

Q.I. Víctor Soto Del Toro

Published

February 5, 2026

Sin datos, ni análisis, ni algoritmos, ni método, ni validación estocástica, ni probabilidad ni estadística, la sostenibilidad no es ética. Es estética.

______________________________________________________________________________________________________________

Nota: este reporte especial está dirigido a profesionales del aseguramiento de la calidad y de la gestión de medio ambiente. No todo el material les parecerá novedoso. La innovación propuesta es la integración de la estocástica y la sostenibilidad en un mismo cuerpo de conocimeinto, para la validación científica del desempeño ambiental mediante el análisis de datos y abandonar la simulación y el comfort de mediciones incompletas. La agenda 2030 lo requiere.

Y tú, ¿ya estás haciendo algo en serio para erradicar el greenwashing corporativo de tu organización?

______________________________________________________________________________________________________________

¿Cómo Demostrarle A Reguladores Si La Intervención Ambiental Ya Surtió Efecto?

En la gestión moderna del desempeño (ambiental, operativo o de sostenibilidad) ya no es suficiente medir, graficar o reportar promedios. Las organizaciones serias enfrentan una exigencia mucho más concreta: demostrar, con base analítica sólida, si un cambio ocurrió y cuándo ocurrió.

Para eso existe la Ciencia de Datos Ambientales. Y, al menos para organizaciones sujetas al escrutinio de sus estados financieros de acuerdo con los párrafos 33, 34 y 35 de la norma IFRS S2 de sostenibilidad, de la que México es miembro activo, la rendición de cuentas del desempeño ambiental con base científica ya no es opcional. Omitirla o tergiversarla constituye, de acuerdo con la Primera Sesión de la Alianza Regional Latinoamericana, una forma de greenwashing. Los reportes ESG tradicionales han perdido credibilidad y hoy resultan insuficientes; la propia Alianza lo ha señalado públicamente.

Esta exigencia no proviene únicamente de reguladores como el ISSB o agencias certificadoras. Proviene de la misma ONU y también de una necesidad interna: poder distinguir, sin ambigüedad ni arbitrariedad, entre el antes y el después de una intervención, una política, un proyecto, un ajuste operativo o una estrategia de mejora continua.

En contextos de rendición de cuentas, particularmente en sostenibilidad y en el marco de la agenda 2030, esta distinción es crucial para evitar narrativas vagas, retrospectivas acomodadas o interpretaciones subjetivas que pueden derivar en greenwashing, aun sin intención explícita.

El problema es conocido.

Los datos varían, los procesos fluctúan, las mejoras rara vez son instantáneas y las decisiones suelen tomarse en medio de ruido estadístico. Frente a esta realidad, muchas organizaciones se apoyan únicamente en comparaciones “antes–después” definidas de forma administrativa o en gráficos descriptivos que, aunque útiles, no resuelven las dos preguntas centrales que exigen control numérico:

¿Hubo realmente un cambio de régimen en el proceso?
Y si lo hubo, ¿en qué momento ocurrió?

En este reporte especial partimos de estas dos preguntas y proponemos un enfoque analítico riguroso, reproducible y defendible para responderlas. En una palabra: científico.

A lo largo del reporte se presenta un workflow completo, desde datos observados iniciales hasta una decisión explícita (simultáneamente administrativa y científica) sobre el punto de quiebre del proceso, combinando:

  • Modelos de referencia para capturar el comportamiento esperado del sistema,

  • Análisis de residuales para aislar desviaciones estructurales,

  • Métodos de monitoreo estadístico para evidenciar acumulación y fases de transición,

  • Y, finalmente, técnicas formales de change-point detection para determinar de manera objetiva cuándo fue que el régimen cambió.

El objetivo no es producir gráficos sofisticados, ni dashboards de colores, ni explorar todas las variantes metodológicas posibles. Eso puede hacerse si el cliente así lo quiere, pero no es el foco del problema.

El objetivo es uno solo y muy concreto:

Determinar, con base científica, si el régimen de un proceso ambiental cambió y en qué momento exacto se consolidó ese cambio.

Para ello, es necesario definir con claridad a qué nos referimos por régimen y por cambio de régimen en el contexto de un proceso ambiental que está obligado a demostrar que está resuelto a ser sostenible.

En este reporte, se entiende por régimen el conjunto de propiedades estadísticas que caracterizan el comportamiento normal de un proceso en un periodo determinado: su nivel medio, su variabilidad, su estructura temporal y su forma de responder a perturbaciones. Mientras estas propiedades permanecen estables dentro de rangos estadísticamente coherentes, se considera que el proceso opera bajo un mismo régimen.

Un cambio de régimen ocurre cuando estas propiedades dejan de ser compatibles con el comportamiento previo y se establece una nueva configuración estadística del proceso. Dicho cambio puede ser abrupto o gradual, pero se vuelve relevante en el momento en que la diferencia entre el antes y el después ya no puede atribuirse razonablemente al azar o a la variabilidad normal del sistema.

El ejemplo que desarrollaremos en este reporte es genérico y didáctico, pero el procedimiento es directamente transferible a contextos reales de desempeño ambiental, calidad, eficiencia operativa o sostenibilidad corporativa. El lector puede tomar tanto el código como los conceptos para construir su propio stack analítico con datos reales de su organización.

El documento presenta tanto la lógica conceptual como el código reproducible necesario para implementar el método y adaptarlo a distintos contextos y escalas de análisis.

Este enfoque está pensado para quienes tienen responsabilidad frente a la organización, los stakeholders, los reguladores, clientes y, en última instancia, frente a sí mismos. No para improvisar conclusiones, sino para analizar, decidir e informar, con base científica, cuando la evidencia cuantitativa importa.

En las secciones siguientes se desarrolla, paso a paso, el procedimiento y el algoritmo que permiten demostrar cómo, a partir de datos observados happenstance, es posible llegar a una conclusión clara, defendible y transparente sobre el cambio de régimen de un proceso. Con ello, se puede evaluar con base científica si una intervención va por buen camino o si requiere ajustes, reencuadre estratégico o trabajo adicional antes de continuar invirtiendo recursos que no generan los beneficios esperados.

El autor se compromete únicamente a dos conclusiones, obtenidas por la vía matemática:

  1. Determinar si sí ocurrió un cambio de régimen.

  2. Determinar cuándo ocurrió dicho cambio de régimen.

Nada más. Nada menos.

Comencemos.


1. Datos observados: punto de partida del análisis

El análisis que vamos a realizar sigue un flujo lógico: observar → modelar → analizar desviaciones.

Antes de entrar en la matemática, es importante entender el propósito de cada paso y lo que nos permitirá inferir más adelante.

Datos observados

Este primer bloque nos muestra la serie temporal real, tal como fue recolectada. Cada punto representa una medición semanal de concentración. No hay transformaciones ni filtros: es la evidencia cruda del proceso. Esta etapa nos permite familiarizarnos con el comportamiento general, detectar rangos de variación y reconocer posibles tendencias preliminares. Sin embargo, aún no nos dice si ocurrió un cambio de régimen; solo establece el punto de partida.

(w <- 1:52)
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
[26] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
[51] 51 52

conc <- c(
  35.8, 33.0, 33.6, 35.0, 33.5, 34.7, 33.6, 36.9, 38.8, 35.5,  
  32.2, 32.2, 33.3, 33.5, 33.0, 33.1, 33.5, 31.9, 31.7, 32.4, 
  34.8, 33.5, 33.9, 32.8, 34.2, 33.4, 31.1, 33.6, 28.9, 35.6, 
  32.9, 31.8, 37.4, 32.0, 34.8, 31.7, 32.7, 36.0, 34.2, 30.3, 
  39.6, 34.6, 31.7, 30.3, 34.4, 32.4, 31.1, 36.5, 33.2, 34.3, 
  35.8, 32.4
)

Visualización interactiva

Graficar los datos con ggplot y plotly cumple un doble propósito:

  • Permite inspeccionar visualmente la serie para identificar patrones, picos o caídas importantes.

  • Facilita la interacción para que el lector explore la serie, reforzando la intuición sobre la dinámica temporal.

Esta visualización prepara la mente para comprender que lo que vemos como “tendencias” o “fluctuaciones” podría ser ruido, transición o señal de un cambio estructural.

library(ggplot2)
library(plotly)

df1 <- data.frame(
  Semana = w,
  Conc = conc
)

p <- ggplot(df1, aes(x = Semana, y = Conc)) +
  geom_point(color = "#265129", size = 2) +
  geom_line(color = "#265129", linetype = "solid") +
  labs(
    title = "Serie temporal observada",
    x = "Tiempo (semanas)",
    y = "Concentración (mg/L)"
  ) +
  theme_minimal(base_size = 14)

ggplotly(p)

Este gráfico no es evidencia. Es contexto. Es observación.

Aquí todavía no se habla de “mejora”, “impacto”, “éxito” ni “fracaso”. Solo se establece:

  • que el proceso fluctúa,
  • que la variabilidad es real,
  • y que a simple vista podrían existir transiciones… o podrían ser solo ruido.

Justo por eso, el siguiente paso no será comparar promedios ni trazar líneas arbitrarias, sino definir un régimen de referencia y analizar las desviaciones de manera estructurada.


2. Modelo de referencia del proceso (baseline)

Antes de hablar de cambios de régimen, es indispensable responder una pregunta previa y fundamental:

¿Cómo se comporta el proceso cuando no asumimos que nada “especial” ha ocurrido?

Para ello introducimos el concepto de modelo de referencia o baseline del proceso. Este modelo no representa una intervención, ni una mejora, ni una política específica. ¿Qué representa entonces?

Representa el comportamiento esperado del proceso en el tiempo, considerando únicamente su dinámica interna y su variabilidad natural.

En este reporte utilizamos un Modelo Aditivo Generalizado (GAM) como baseline (línea base). La razón es metodológica:

  • Permite capturar tendencias suaves y no lineales sin imponer formas rígidas.
  • No “fuerza” puntos de quiebre ni rupturas artificiales.
  • Se ajusta mediante criterios estadísticos formales (REML), no por inspección visual.

El baseline actúa como una hipótesis nula operacional:

Ho: “El proceso sigue comportándose conforme a su patrón histórico esperado.”

Así, la hipótesis alternativa será:

Ha: “El proceso NO sigue comportándose conforme a su patrón histórico esperado.”

Este es el pensamiento inferencial frecuentista que desbarata el greenwashing, por completo.

library(mgcv)
# Modelo GAM: baseline del proceso
mod_ref <- gam(conc ~ s(w, k = 6), method = "REML")

# Resumen del modelo
summary(mod_ref)

Family: gaussian 
Link function: identity 

Formula:
conc ~ s(w, k = 6)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  33.6365     0.2834   118.7   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Approximate significance of smooth terms:
       edf Ref.df     F p-value
s(w) 1.619  2.002 0.836   0.437

R-sq.(adj) =  0.0143   Deviance explained = 4.56%
-REML = 111.03  Scale est. = 4.1771    n = 52

library(ggplot2)
library(plotly)

# Data frame con valores ajustados
df_baseline <- data.frame(
  Semana = w,
  Conc = conc,
  Baseline = fitted(mod_ref)
)

# Gráfico del baseline
p_baseline <- ggplot(df_baseline, aes(x = Semana)) +
  geom_point(aes(y = Conc), color = "#265129", size = 2) +
  geom_line(aes(y = Conc), color = "#265129", linetype = "solid") +
  geom_line(aes(y = Baseline), color = "#B22222", linewidth = 1.2) +
  labs(
    title = "Modelo de referencia del proceso (baseline)",
    x = "Tiempo (semanas)",
    y = "Concentración (mg/L)"
  ) +
  theme_minimal(base_size = 14)

ggplotly(p_baseline)

Sobre el gráfico se muestran:

  1. - Los datos observados (puntos y línea),
  2. - La curva roja del baseline, que resume la tendencia suave esperada del proceso.

Este paso es crítico porque todo el análisis posterior depende de él.

Sin un baseline explícito que parta de un modelo estadístico apropiado, cualquier afirmación de “mejora”, “impacto” o “cambio” queda sujeta a interpretación subjetiva y arbitrariedad. Ese tipo de discurso narrativo va en contra de la ciencia.

En términos de rendición de cuentas, este modelo permite separar claramente:

  1. - Lo que es variación inherente del proceso,
  2. - De lo que podría ser una desviación estructural.

En la siguiente sección, utilizaremos este baseline para construir los residuales del proceso, que son la materia prima real para detectar cambios de régimen de manera objetiva y defendible.

Aquí todavía no afirmamos que el régimen haya cambiado.

Solo establecemos, con rigor estadístico, la referencia contra la cual vamos a evaluar esa afirmación.


3. Residuales: desviación respecto al régimen esperado

Una vez definido el modelo de referencia, el análisis entra en su fase decisiva.
El interés ya no está en los valores observados en sí mismos, sino en cuánto y cómo se desvían del comportamiento esperado del proceso.

A estas desviaciones las llamamos residuales.

Formalmente, cada residual representa:

Dato observado – valor esperado según el baseline

Desde el punto de vista de control y rendición de cuentas, los residuales son el objeto correcto de análisis, porque:

  • Eliminan la tendencia suave del proceso.
  • Aíslan señales que no pueden explicarse por la dinámica normal.
  • Transforman el problema en uno de estabilidad de régimen.

La misión de este trabajo analítico es averiguar si el cambio de régimen ocurrió o no ocurrió. Las opiniones subjetivas están prohibidas porque no son científicas. Por eso, la regla oeprativa que debes tener presente es lo siguiente:

Si el proceso no ha cambiado de régimen, entonces los residuales (que surgen del modelo apropiadamente seleccionado) deberían comportarse como ruido alrededor de cero, sin patrones persistentes, ni tendencias, ni acumulaciones ni desplazamientos sistemáticos. Solo ruido. En términos de TSA estrictamente hablamos del ruido blanco de la ACF.

# Residuales del modelo de referencia
as.matrix((res <- resid(mod_ref)))
             [,1]
 [1,]  1.38095061
 [2,] -1.36612055
 [3,] -0.71319155
 [4,]  0.73973035
 [5,] -0.70737713
 [6,]  0.54544179
 [7,] -0.50188468
 [8,]  2.85054003
 [9,]  4.80257850
[10,]  1.55405895
[11,] -1.69522310
[12,] -1.64550115
[13,] -0.49703222
[14,] -0.25008968
[15,] -0.70495487
[16,] -0.56190784
[17,] -0.12121779
[18,] -1.68313359
[19,] -1.84787507
[20,] -1.11562534
[21,]  1.31347532
[22,]  0.03933373
[23,]  0.46190608
[24,] -0.61880197
[25,]  0.79726285
[26,]  0.01019755
[27,] -2.27986256
[28,]  0.22724941
[29,] -4.46827567
[30,]  2.23376910
[31,] -0.46640132
[32,] -1.56857128
[33,]  4.02746889
[34,] -1.37808244
[35,]  1.41495768
[36,] -1.69324576
[37,] -0.70254682
[38,]  2.58718166
[39,]  0.77604946
[40,] -3.13584865
[41,]  6.15157004
[42,]  1.13837933
[43,] -1.77535283
[44,] -3.18956159
[45,]  0.89581673
[46,] -1.11915415
[47,] -2.43441035
[48,]  2.95011139
[49,] -0.36552812
[50,]  0.71872686
[51,]  2.20292376
[52,] -1.21290204

library(ggplot2)
library(plotly)

# Data frame de residuales
df_res <- data.frame(
  Semana = w,
  Residual = res
)

# Gráfico de residuales
p_res <- ggplot(df_res, aes(x = Semana)) +
  geom_point(aes(y = Residual), color = "#265129", size = 2) +
  geom_line(aes(y = Residual), color = "#265129") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "gray40") +
  labs(
    title = "Residuales respecto al modelo de referencia",
    x = "Tiempo (semanas)",
    y = "Residual (observado – baseline)"
  ) +
  theme_minimal(base_size = 14)

ggplotly(p_res)

En el gráfico se observa:

  1. La línea horizontal en cero, que representa el régimen esperado.

  2. Las desviaciones positivas y negativas respecto a ese régimen.

  3. Posibles zonas donde los residuales dejan de oscilar simétricamente.

Este paso marca una diferencia clave entre análisis improvisado y análisis riguroso:

  • Comparar promedios “antes y después” asume un punto de corte.
  • Analizar residuales permite detectarlo.

En términos de sostenibilidad, calidad o desempeño operativo, este enfoque evita conclusiones artificales que siempre son acomodos retrospectivos. Es decir:

Si estás buscando cambios de régimen en conjuntos de datos happenstance, lo que no debes hacer nunca es decidir primero “cuándo cambió el proceso” y luego buscar métodos para justificar tu decisión. Eso es anticientífico y contrario al principio de falsabilidad de la escuela de Popper. Lo que debes hacer es permitir que los datos hablen y te indiquen si hubo o no transición de régimen y cuándo ocurrió. La validación es para eso.

En la siguiente sección avanzaremos un paso más:

Aplicaremos métodos de monitoreo estadístico sobre los residuales para evaluar si estas desviaciones se acumulan de forma consistente, preparando el terreno para la detección formal del cambio de régimen.

Ahí es donde el análisis deja de ser diagnóstico y empieza a ser probatorio.


4. Reducción no paramétrica: signos

Hasta este punto hemos trabajado con magnitudes: cuánto se desvía cada observación respecto al régimen esperado.

Ahora realizamos una reducción deliberada de información. No es obligatoria ni debes ni necesitas hacerla como lo haré aquí. Aunque es totalmente aceptable, existen métodos más sofisticados. Sigamos.

Cada residual se transforma únicamente en su dirección:

  • +1 si el proceso está por encima del régimen esperado,
  • −1 si está por debajo,
  • 0 si coincide exactamente con el baseline.
# Reducción no paramétrica: signo del residual
# −1 : observación por debajo del baseline
#  0 : observación exactamente en el baseline
# +1 : observación por encima del baseline
as.matrix(z <- sign(res))
      [,1]
 [1,]    1
 [2,]   -1
 [3,]   -1
 [4,]    1
 [5,]   -1
 [6,]    1
 [7,]   -1
 [8,]    1
 [9,]    1
[10,]    1
[11,]   -1
[12,]   -1
[13,]   -1
[14,]   -1
[15,]   -1
[16,]   -1
[17,]   -1
[18,]   -1
[19,]   -1
[20,]   -1
[21,]    1
[22,]    1
[23,]    1
[24,]   -1
[25,]    1
[26,]    1
[27,]   -1
[28,]    1
[29,]   -1
[30,]    1
[31,]   -1
[32,]   -1
[33,]    1
[34,]   -1
[35,]    1
[36,]   -1
[37,]   -1
[38,]    1
[39,]    1
[40,]   -1
[41,]    1
[42,]    1
[43,]   -1
[44,]   -1
[45,]    1
[46,]   -1
[47,]   -1
[48,]    1
[49,]   -1
[50,]    1
[51,]    1
[52,]   -1

Este paso puede parecer contraintuitivo para lectores acostumbrados a maximizar detalle numérico, pero es metodológicamente fundamental.

La razón es simple:

Para detectar un cambio de régimen, no importa tanto cuánto se desvía el proceso en un instante aislado, sino hacia dónde se desvía de forma persistente.

Al trabajar con signos:

  • Eliminamos la influencia de valores extremos.
  • Reducimos sensibilidad a outliers.
  • Ganamos robustez frente a ruido de alta variabilidad.
  • Convertimos el problema en uno de dirección acumulada, no de magnitud puntual.

Desde la perspectiva de rendición de cuentas, esta decisión tiene implicaciones importantes:

  • Evita justificar conclusiones con eventos aislados o picos anómalos.
  • Impide que una sola observación extrema “simule” una mejora o deterioro.
  • Refuerza el carácter defensible del análisis ante auditorías técnicas o regulatorias.

Esta reducción no es una simplificación ingenua, sino una estrategia clásica en control estadístico y detección de cambios: primero se estabiliza el lenguaje de la señal, luego se evalúa su acumulación en el tiempo.

En las siguientes secciones utilizaremos estos signos como insumo para construir estadísticas de monitoreo que permiten responder, con evidencia acumulada, si el proceso está migrando hacia un nuevo régimen o si las desviaciones observadas siguen siendo compatibles con las fluctuaciones del pasado, lo que significaría que no hubo cambio.

Aquí es donde el análisis deja definitivamente atrás la descripción y entra en el terreno de la decisión estadística estructural.


5. CUSUM no paramétrico: evidencia global de cambio

Una vez que cada observación ha sido reducida a su dirección respecto al régimen esperado, el siguiente paso es acumular esa información en el tiempo. Para ello utilizamos un CUSUM (Cumulative Sum) no paramétrico.

El CUSUM suma secuencialmente los signos de los residuales. Conceptualmente:

  • Si el proceso oscila alrededor del baseline sin sesgo estructural, la suma acumulada tenderá a fluctuar alrededor de cero.
  • Si el proceso comienza a desviarse de forma persistente en una dirección, el CUSUM mostrará una deriva sostenida.

Este gráfico no pretende identificar con precisión el momento exacto del cambio. Eso lo hacemos después. Por ahora, su función es distinta y complementaria:

El CUSUM responde a la pregunta:
¿Existe evidencia acumulada de que el proceso dejó de comportarse como antes?

library(ggplot2)
library(plotly)

# CUSUM no paramétrico de signos
cusum <- cumsum(z)

df_cusum <- data.frame(
  Semana = w,
  CUSUM = cusum
)

p_cusum <- ggplot(df_cusum, aes(x = Semana, y = CUSUM)) +
  geom_line(linewidth = 1.2, color = "#265129") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "gray50") +
  labs(
    title = "CUSUM no paramétrico (evidencia acumulada)",
    x = "Semana",
    y = "CUSUM (signos)"
  ) +
  theme_minimal(base_size = 14)

ggplotly(p_cusum)

Con solo dar un vistazo, parece que sí. Sin embargo, si hemos de ser formales, ningún gráfica es jamás concluyente. Para eso se necesitan las pruebas y algoritmos analíticos.

Sin embargo, desde una perspectiva de gestión y rendición de cuentas provisional, el CUSUM cumple un rol clave:

  • Convierte múltiples desviaciones pequeñas, aparentemente irrelevantes de forma aislada, en una señal clara cuando se acumulan.
  • Permite detectar cambios graduales que no serían visibles en comparaciones “antes–después”.
  • Proporciona evidencia global, no anecdótica, del comportamiento del proceso.

Es importante subrayar que el CUSUM no decide por sí solo el punto de quiebre. Su valor está en mostrar que la hipótesis de estabilidad del régimen empieza a ser insostenible: el gráfico claramente muestra que sí hubo un cambio que adoptó la forma de reducción.

En otras palabras, aquí no estamos “fechando” el cambio, sino demostrando que algo estructural está ocurriendo y cambiando. El cambio puede ser perjudicial si la contaminación está aumentando, o benéfico si se está reduciendo.

El CUSUM no dictamina si ese cambio es para bien o para mal. Eso lo determina el tomador de decisiones.

En la siguiente sección refinaremos esta evidencia utilizando una estadística local, Suma Móvil, (MOSUM), diseñada específicamente para acotar temporalmente la transición y preparar el terreno para tomar una decisión formal del change-point.


6. MOSUM no paramétrico: identificación de la fase de transición

Mientras que el CUSUM proporciona evidencia global acumulada de que el proceso dejó de comportarse como antes, el MOSUM (Moving Sum) introduce una perspectiva distinta y crucial: una mirada local en el tiempo.

El MOSUM no acumula toda la historia del proceso. En su lugar, evalúa lo que ocurre dentro de una ventana móvil de tamaño fijo, lo que lo convierte en una herramienta especialmente adecuada para detectar fases de transición entre regímenes. El parámetro experimental es \(h\) y puede tomar distintos valores. Para saber más acerca de las reglas del parámetro \(h\), se le invita al lector a consultar en la literatura especializada en el tema.

library(ggplot2)
library(plotly)

# Tamaño de ventana (escala local del proceso)
h <- 8

# MOSUM no paramétrico de signos
mosum <- sapply(h:length(z), function(t) {
  sum(z[(t - h + 1):t])
})

w_mosum <- w[h:length(w)]

df_mosum <- data.frame(
  Semana = w_mosum,
  MOSUM = mosum
)

p_mosum <- ggplot(df_mosum, aes(x = Semana, y = MOSUM)) +
  geom_line(linewidth = 1.2, color = "#265129") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "gray50") +
  labs(
    title = paste("MOSUM no paramétrico (h =", h, ")"),
    x = "Semana",
    y = "MOSUM (signos)"
  ) +
  theme_minimal(base_size = 14)

ggplotly(p_mosum)

Claramente vemos que el gráfico MOSUM nos revela que sí ocurrió un cambio importante entre las semanas 11 y 28. Se invita al lector a mover el mouse sobre el gráfico. Hallará que en la esquina superior derecha hay un menú intuitivo. Explórelo.


Definición matemática de MOSUM

Sea \(z_t\) la secuencia de signos de los residuales, definida como:

\[z_t = \operatorname{sign}(r_t), \quad z_t \in {-1, 0, +1}\]

donde \(r_t\) es el residual del modelo de referencia en el tiempo \(t\).

El estadístico MOSUM se define como:

\[\mathrm{MOSUM}_{t(h)} = \sum{i=t-h+1}^{t} z_i\]

donde:

  • \(h\) es el tamaño de la ventana (escala local del análisis),
  • \(t\ge h\),
  • la suma incluye únicamente las observaciones más recientes dentro de la ventana.

Interpretación estadística

Esta expresión tiene una lectura directa:

  • El MOSUM mide el balance local entre desviaciones positivas y negativas respecto al régimen esperado.
  • Si dentro de la ventana predominan residuales positivos, el MOSUM será positivo.
  • Si predominan residuales negativos, el MOSUM será negativo.
  • Si el proceso está en equilibrio, el MOSUM oscila alrededor de cero.

A diferencia del CUSUM, el MOSUM no crece indefinidamente. Su diseño obliga al estadístico a “olvidar” el pasado remoto, concentrándose únicamente en el comportamiento reciente.

Significado operacional del parámetro \(h\)

El parámetro \(h\) representa una decisión analítica explícita:

  • Define la escala temporal mínima a la que un cambio es considerado relevante.
  • Ventanas pequeñas detectan transiciones rápidas, pero pueden ser sensibles al ruido.
  • Ventanas más grandes suavizan la señal, pero requieren cambios más persistentes.

En términos de gestión y rendición de cuentas, \(h\) debe interpretarse como:

“¿Cuántas observaciones consecutivas necesito para considerar que un cambio es real y no un accidente?”

Rol del MOSUM en el workflow

El MOSUM cumple una función precisa dentro del procedimiento completo:

  • No decide aún el punto exacto de quiebre.
  • No sustituye a los métodos formales de change-point.
  • Delimita temporalmente la fase de transición, mostrando dónde el proceso deja de oscilar y comienza a desplazarse de forma estructural.

En otras palabras, el MOSUM transforma la pregunta difusa “algo parece estar cambiando” en una señal localizada que prepara el terreno para la decisión final.

En la siguiente sección utilizaremos técnicas formales de change-point detection para convertir esta evidencia visual y estadística en una fecha objetiva y defendible del cambio de régimen, con base científica.


7. Detección explícita del change-point: decisión formal y auditable

En esta etapa el análisis deja definitivamente el terreno exploratorio y entra en el ámbito de la decisión estadística formal.

El objeto informativo mostrado enseguida corresponde al resultado directo (sin post-procesamiento ni reinterpretación ni opinión humana) del algoritmo de detección de change-point, aplicado a los residuales del modelo de referencia.

Este punto es crucial desde la perspectiva de rendición de cuentas: no se reporta una gráfica interpretada, sino la salida íntegra de un procedimiento estadístico estándar, implementado mediante una librería ampliamente utilizada, respetada y mantenida en CRAN.

¿Qué está detectando exactamente el algoritmo?

Lo haremos de dos maneras.

Primero por la vía no paramétrica.

library(changepoint)
library(changepoint.np)

# Detección no paramétrica basada en la distribución empírica
summary(cpt.np(
  conc,
  method     = "PELT",
  penalty    = "MBIC",
  test.stat  = "empirical_distribution"
))
Created Using changepoint version 2.3 
Changepoint type      : Change in nonparametric (empirical_distribution) 
Method of analysis    : PELT 
Test Statistic  : empirical_distribution 
Type of penalty       : MBIC with value, 11.85373 
Minimum Segment Length : 1 
Maximum no. of cpts   :  
Changepoint Locations : 10 

Segundo, por la vía páramétrica.

summary(cpt.mean(
  res,
  method  = "AMOC",
  penalty = "AIC"
))
Created Using changepoint version 2.3 
Changepoint type      : Change in mean 
Method of analysis    : AMOC 
Test Statistic  : Normal 
Type of penalty       : AIC with value, 4 
Minimum Segment Length : 1 
Maximum no. of cpts   : 1 
Changepoint Locations : 10 

Ambas arrojan el mismo resultado: el cambio de régimen ocurre a partir de la semana 10.

El procedimiento aplicado es:

  • Tipo de cambio: cambio en la ECDF y la media (Change in mean).
  • Variable analizada: residuales del modelo de referencia (splines).
  • Hipótesis implícita: existe a lo sumo un punto en el tiempo a partir del cual la media de los residuales cambia de manera estructural.

Esto significa que el algoritmo está respondiendo a la siguiente pregunta formal:

¿Existe en la serie de datos, un instante en el que el comportamiento del proceso deja de fluctuar alrededor del mismo nivel esperado y pase a hacerlo alrededor de otro?

Enfoque PELT: detección óptima bajo penalización, no búsqueda oportunista

El método PELT (Pruned Exact Linear Time) está diseñado para identificar puntos de cambio óptimos en una serie temporal, equilibrando de forma explícita dos fuerzas contrapuestas: la evidencia estadística de cambio y la complejidad del modelo.

A diferencia de enfoques exploratorios, PELT no “busca rupturas” de manera oportunista, sino que selecciona únicamente aquellas que justifican su existencia frente a una penalización formal. En el contexto de rendición de cuentas, este enfoque es especialmente adecuado cuando se requiere demostrar que un cambio de régimen es suficientemente fuerte como para sobrevivir a un criterio conservador. Con esto evitamos las narrativas retrospectivas subjetivas y “opiniones personales de expertos”.

El resultado no es una colección de quiebres posibles, sino una decisión estadística optimizada sobre si el proceso cambió y cuándo ese cambio se consolidó. El resultado surge exclusivamente del algoritmo y por eso, es objetivo e imparcial.

Enfoque AMOC: una decisión, no una exploración

El método AMOC (At Most One Change) asume explícitamente que:

  • El análisis busca un único punto de quiebre dominante.
  • No se pretende identificar múltiples rupturas menores, sino fechar el momento que separa dos regímenes claramente distinguibles.

Este enfoque es especialmente adecuado cuando el análisis está ligado a una intervención, política o proyecto específico, y cuando la rendición de cuentas exige una respuesta clara del tipo sí/no.

Penalización AIC y criterio de decisión

La penalización AIC controla el balance entre:

  • Sensibilidad para detectar un cambio real,
  • Evitar ajustes artificiales a ruido aleatorio.

El valor mostrado en la salida indica que el algoritmo evaluó la existencia del cambio y concluyó que introducir un punto de quiebre mejora el modelo lo suficiente como para justificar su inclusión, bajo este criterio.

Interpretación del resultado

La línea clave del output es:

Este resultado establece, de manera explícita y reproducible, que:

  • Elcambio de régimen se detecta en la semana 10.
  • A partir de ese punto, el proceso exhibe un comportamiento estadísticamente distinto al observado antes de la semana 10.

No se trata de una decisión administrativa ni de una delimitación arbitraria ni recomendación humana.

Es la fecha estimada por el algoritmo como el punto en el tiempo donde el régimen cambia: a partir de la semana 10 se establece el antes y después en la línea de tiempo.

En palabras simples: lo que sea que haya cambiado, comenzó a cambiar a partir de la semana 10.

¿Por qué este resultado es defendible?

Este output cumple con los criterios fundamentales de rigor:

  • Es reproducible: cualquier analista con los mismos datos y código obtiene el mismo resultado.
  • Es auditable: se reporta el método, la penalización, el estadístico y la localización del cambio.
  • Es no narrativo: la fecha del cambio no se “elige”. Se estima.

En términos de sostenibilidad, calidad o desempeño operativo, este punto de quiebre puede utilizarse como:

  • Frontera entre el régimen previo y el posterior a una intervención.
  • Referencia objetiva para evaluar eficacia, rezagos o necesidad de ajustes.
  • Evidencia cuantitativa frente a reguladores, certificadoras y stakeholders.

En la sección siguiente integraremos este punto de quiebre con los análisis anteriores, mostrando cómo CUSUM, MOSUM y change-point convergen hacia una misma estructura temporal, cerrando el ciclo analítico y narrativo sin recurrir a interpretaciones subjetivas, totalmente libre de subjetividades, preferencias, opiniones personales, seniority o “experiencia profesional”.

En ciencia analítica nada de eso importa. “La opinión del mejor” es totalmente irrelevante.

Aquí, finalmente, el análisis ya respondió con precisión a las dos preguntas fundamentales:

  1. Sí hubo un cambio de régimen.
  2. Ocurrió en un momento identificable y defendible en el tiempo.

¿Este tipo de resultado analítico cómo te beneficia en tu trabajo?

Si prometiste que las cosas cambiarían y estás obligado a demostrarlo científicamente, este es el método.


8. Integración visual centrada en el change-point

En esta sección se integran todos los elementos del análisis alrededor de un único eje decisional: el punto de quiebre detectado formalmente.

El punto de quiebre los marcaremos con una línea vertical roja punteada.

A diferencia de enfoques puramente descriptivos, aquí las visualizaciones no buscan “sugerir” interpretaciones, sino todo lo contrario:

Los siguientes gráficos han sido actualizados con la marca de quiebre en rojo para confirmar visualmente que una decisión estadística ya ha sido tomada .

Lo relevante es que, con nuestro método, esa decisión no la toma ninguna persona: la tomaron dos algoritmos diseñados para cumplir la tarea de change-point detection.

Quizá no lo parezca, pero esto te protege: si el algoritmo lo dice, ¿quién lo va a contradecir?

Residuales: Evidencia directa del cambio de régimen

El primer gráfico muestra los residuales del modelo de referencia junto con el punto de quiebre estimado.

Este gráfico permite observar de manera directa que:

  • Antes del punto de quiebre, los residuales fluctúan alrededor de un nivel medio consistente.
  • A partir del punto de quiebre, el patrón de desviación cambia, indicando que el proceso ya no responde al mismo régimen estadístico.

El punto vertical no es interpretativo ni ajustado a posteriori: corresponde exactamente a la localización estimada por los dos algoritmos que aplicamos arriba: PELT y AMOC.

library(ggplot2)
library(plotly)

# Data frame para residuales
df_res <- data.frame(
  Semana   = w,
  Residual = res
)

# Residuales con change-point
p_res <- ggplot(df_res, aes(x = Semana, y = Residual)) +
  geom_point(color = "#265129") +
  geom_line(color = "#265129") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "#2C3E50") +
  geom_vline(xintercept = cp_index,
             linetype = "dashed",
             color = "#B03A2E",
             linewidth = 1) +
  labs(
    title = "Residuales del proceso con punto de quiebre detectado",
    x = "Semana",
    y = "Residual"
  ) +
  theme_minimal(base_size = 14)

ggplotly(p_res)

CUSUM: Evidencia global de cambio de régimen

El CUSUM representa la suma acumulada de los signos de los residuales, capturando la dirección persistente de las desviaciones respecto al régimen esperado.

Su función en este workflow no es localizar el momento exacto del cambio, sino responder una pregunta previa y fundamental:

¿Existe evidencia acumulada de que el proceso dejó de comportarse como antes?

Al superponer el punto de quiebre detectado formalmente, se observa que el CUSUM presenta una deriva sostenida a partir de dicho punto, lo cual es incompatible con un proceso estacionario bajo el régimen inicial.

library(ggplot2)
library(plotly)

# Data frame para CUSUM
df_cusum <- data.frame(
  Semana = w,
  CUSUM  = cusum
)

# CUSUM con change-point
p_cusum <- ggplot(df_cusum, aes(x = Semana, y = CUSUM)) +
  geom_line(color = "#196F3D", linewidth = 1) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "gray50") +
  geom_vline(xintercept = cp_index,
             linetype = "dashed",
             color = "#B03A2E",
             linewidth = 1) +
  labs(
    title = "CUSUM no paramétrico y cambio de régimen",
    x = "Semana",
    y = "CUSUM (signos)"
  ) +
  theme_minimal(base_size = 14)

ggplotly(p_cusum)

Al superponer el quiebre en rojo (que se estimó por PELT y AMOC) sobre la gráfica CUSUM, ya no queda discusión: la transición comenzó en la semana 10 y se ha mantenido.

La evidencia es tanto gráfica como analítica: para que sea científica, así es como debe ser.

Con nuestro nuevo y original enfoque aplicado al desempeño ambiental, el CUSUM cumple un rol específico:

  • Confirma la existencia de un cambio estructural a escala global.

  • Proporciona evidencia acumulada independiente de ventanas móviles.

  • Sustenta la necesidad de una detección explícita de cambio de régimen.

Así, el CUSUM establece la evidencia global, mientras que el MOSUM caracteriza la transición y el algoritmo de change-point fija la fecha del quiebre.


MOSUM: Transición y consolidación del nuevo régimen

El tercer y último gráfico integra el mismo punto de quiebre sobre el estadístico MOSUM, que captura cambios locales y acumulativos en la dirección del error.

Aquí se observa algo fundamental para la rendición de cuentas:

  • El cambio no ocurre como un salto instantáneo perfectamente limpio.
  • Existe una fase de transición, donde el proceso se desplaza gradualmente de un régimen a otro.
  • El punto de quiebre marca el instante en que ese desplazamiento se vuelve estadísticamente consistente y defendible.

Este comportamiento es típico de procesos reales, especialmente en contextos ambientales, operativos y de sostenibilidad, donde las intervenciones rara vez producen efectos inmediatos.

# Data frame para MOSUM
df_mosum <- data.frame(
  Semana = w_mosum,
  MOSUM  = mosum
)

# MOSUM con change-point
p_mosum <- ggplot(df_mosum, aes(x = Semana, y = MOSUM)) +
  geom_line(color = "#265129", linewidth = 1) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "gray50") +
  geom_vline(xintercept = cp_index,
             linetype = "dashed",
             color = "#B03A2E",
             linewidth = 1) +
  labs(
    title = "MOSUM no paramétrico y fase de transición",
    x = "Semana",
    y = "MOSUM (signos)"
  ) +
  theme_minimal(base_size = 14)

ggplotly(p_mosum)

¿Cómo lo leemos?

Simple: el cambio de régimen comienza en la semana 10 y el nuevo régimen alcanza su estabilidad entre las semanas 25 y 28. Esto significa que el período inestable de transición ocurrió entre las semanas 10 y 25.


Comparación de Distribuciones de Probabilidad

Hasta ahora hemos hablado de “antes” y “después” como conceptos abstractos.

En esta sección los hacemos visibles.

Si un régimen realmente cambió, no solo deberían cambiar los valores puntuales en el tiempo, sino la forma completa de la distribución de probabilidad que genera los datos.

A continuación superponemos las distribuciones empíricas del proceso antes y después del punto de quiebre detectado.

No asumimos normalidad, no imponemos medias ni varianzas: dejamos que los datos hablen mediante histogramas suavizados y estimaciones no paramétricas de densidad (KDE).

Si ambos regímenes pertenecieran a la misma realidad estadística, estas curvas se traslaparían de forma sustancial.

Por otro lado, si el régimen cambió, el contraste no será necesariamente total, pero cualquier cambio sí será visiblemente evidente y puede haber empalme.

Observa de cerca las distribuciones de probabilidad de ambos regímenes.

library(plotly)

# Punto de quiebre
cp <- 10

# Regímenes
conc_before <- conc[w <= cp]
conc_after  <- conc[w >  cp]

# KDE con colas extendidas
dens_before <- density(conc_before, adjust = 1.5)
dens_after  <- density(conc_after,  adjust = 1.5)

p <- plot_ly() |>

  # Histograma: antes del cambio
  add_histogram(
    x = conc_before,
    histnorm = "probability density",
    name = "Antes del cambio",
    opacity = 0.45,
    marker = list(color = "rgba(215,154,58,0.65)"), # #D79A3A
    nbinsx = 12
  ) |>

  # Histograma: después del cambio
  add_histogram(
    x = conc_after,
    histnorm = "probability density",
    name = "Después del cambio",
    opacity = 0.45,
    marker = list(color = "rgba(38,81,41,0.65)"), # #265129
    nbinsx = 12
  ) |>

  # KDE antes (línea sólida)
  add_lines(
    x = dens_before$x,
    y = dens_before$y,
    name = "Densidad empírica (antes)",
    line = list(
      color = "#D79A3A",
      width = 3
    )
  ) |>

  # KDE después (línea sólida)
  add_lines(
    x = dens_after$x,
    y = dens_after$y,
    name = "Densidad empírica (después)",
    line = list(
      color = "#265129",
      width = 3
    )
  ) |>

  layout(
    title = list(
      text = "Cambio de régimen: distribuciones de probabilidad diferentes",
      x = 0.5
    ),
    xaxis = list(title = "Concentración (mg/L)"),
    yaxis = list(title = "Densidad empírica"),
    barmode = "overlay",
    legend = list(orientation = "h", x = 0.22, y = -0.18)
  )

p

¿Qué opina el lector? ¿Son iguales? ¿Son diferentes? ¿Son muy diferentes? ¿Son poco diferentes?

Este gráfico resume visualmente lo que significa un cambio de régimen:

  • Cada color representa una realidad estadística distinta del proceso.

  • Las diferencias no se limitan a un desplazamiento del promedio: cambian la forma, la dispersión y las colas de la distribución.

  • La densidad empírica (KDE) muestra que los datos antes y después del punto de quiebre no provienen de la misma distribución subyacente.

Esto es precisamente lo que los métodos de change-point detection formalizan matemáticamente:

La transición entre dos regímenes probabilísticos distintos.

Cierre Inferencial: Prueba de Hipótesis

Hasta ahora hemos mostrado evidencia visual y estructural de un cambio de régimen.

El último paso es formular explícitamente una prueba de hipótesis clásica, no paramétrica, que contraste si ambos regímenes pueden considerarse estadísticamente equivalentes.

Para ello utilizamos la prueba de Mann–Whitney (Wilcoxon rank-sum), adecuada cuando no se asume normalidad ni se comparan medias, sino la localización general de dos distribuciones independientes.

# Prueba no paramétrica de igualdad de distribuciones
mw_test <- wilcox.test(
  conc_before,
  conc_after,
  alternative = "two.sided",
  exact = FALSE
)

mw_test

    Wilcoxon rank sum test with continuity correction

data:  conc_before and conc_after
W = 324.5, p-value = 0.008085
alternative hypothesis: true location shift is not equal to 0

La prueba rechaza la hipótesis nula de igualdad distributiva entre los datos antes y después del punto de quiebre (p-valor = 0.008).

Sin imponer supuestos paramétricos, este resultado confirma que ambos conjuntos de observaciones no provienen de la misma distribución subyacente.

En términos prácticos, esto significa que la diferencia entre regímenes no puede atribuirse a variabilidad aleatoria ni a la suerte: hubo efectivamente una causa, intervención o esfuerzo que empujó el impacto ambiental hacia un nivel menor.

En conjunto con la detección explícita del change-point y el contraste visual de las distribuciones empíricas, la evidencia converge en una conclusión clara y operativamente verificable:

El proceso cambió de régimen en un momento identificable y estadísticamente defendible.

Y dicho sin rodeos:

Si estos datos provinieran de un proyecto tuyo, puedes celebrar, destapar la champaña y decirlo sin complejos:

👉 Misión cumplida.


Conclusión: Cierre del Workflow Analítico

La tarea es demasiado simple:

Tienes una serie de datos. Identificas el punto de quiebre. Descubres si el cambio ocurrió o no.

Eso es todo.

Se dice simple. El proceso es laborioso.

Con esta integración visual que hicimos, el workflow completo se cierra:

  • Los datos observados muestran variabilidad natural.
  • El modelo de referencia captura el comportamiento esperado.
  • Los residuales aíslan desviaciones estructurales.
  • CUSUM evidencia acumulación global.
  • MOSUM revela la fase de transición.
  • El algoritmo de change-point fija el momento exacto del cambio.

A partir de este punto, ya no hay ambigüedad:

  • El antes y el después quedan definidos.
  • La fecha del cambio no depende de criterios administrativos.
  • La conclusión puede ser defendida técnica, regulatoria, científica y legalmente.

Este es el tipo de análisis que permite pasar de narrativas vagas a evidencia cuantitativa, y de reportes declarativos a rendición de cuentas basada en datos.

Espero que esta información haya sido de tu agrado. Quiero aclarar que, aunque útil e ilustrativa, no es completa ni pretende serlo. Faltan más consideraciones, pero para propósitos educativos espero que te haya servido.

¿Para qué hice esto?

Lo único que busco es mostrarle al lector una sola cosa: el auténtico rigor científico que demuestra la verdad acerca de un asunto, exige análisis. Sin él, solo tenemos nuestras opiniones y preferencias.

Tú eliges: informar con cifras validadas, o describir con discursos convincentes.

Si en este reporte especial encuentras cualquier error, inconsistencia o contradicción es responsabilidad totalmente mía. Házmela saber.

Gracias y buena suerte.


Y recuerda el origen del greenwashing:

Sin datos, ni análisis, ni algoritmos, ni método, ni validación estocástica, ni probabilidad ni estadística, la sostenibilidad no es ética. Es estética.

Otras publicaciones del autor:

Bases de la validación en ciencias aplicadas y medio ambiente

Bases del análisis multivariable para procesos fisicoquímicos

Bases del aseguramiento de calidad aplicado al desempeño ambiental, parte I

Bases del aseguramiento de calidad aplicado al desempeño ambiental, parte II

Diseño científico de calendarios de muestreo con base estocástica por Transformada de Fourier

Base científica para demostrar los efectos benéficos de intervenciones ambientales

Contacto

Para orientación, consultas, estudios y proyectos relacionados con validación de datos, contáctenos:

Q. I. Víctor Soto Del Toro

Qué NO Hacemos en Analítica Sostenible

No contamos historias para que los números “se vean bien”.
Si un resultado no puede sostenerse con evidencia, no lo maquillamos con narrativa.

No entregamos cifras para tranquilizar conciencias.
Nuestro trabajo no existe para generar comodidad, sino claridad.

No presentamos conclusiones que no estaríamos dispuestos a defender públicamente.
Si un resultado no resiste escrutinio, no se publica.

No convertimos la incertidumbre en silencio.
Ocultarla, minimizarla o ignorarla es una forma de engaño.

No afirmamos impactos positivos que no puedan demostrarse.
Decir “vamos bien” sin evidencia es una falta ética, no una opinión técnica.

No trabajamos para justificar decisiones ya tomadas.
Nuestro rol no es legitimar discursos, sino evaluar hechos.

No ajustamos el rigor según conveniencia política, institucional o comercial.
La responsabilidad ambiental no se negocia.

No confundimos sostenibilidad con buena intención.
Las intenciones no reducen impactos.
Las decisiones informadas, sí.

No usamos el lenguaje de la ciencia para encubrir ausencia de ciencia.
Eso no es error metodológico: es deshonestidad profesional.

En resumen:

No participamos en la simulación de responsabilidad.